perm filename COOP.PRG[2,VDS] blob sn#198045 filedate 1976-01-23 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00014 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	C *** ORDER COMPILATION PROGRAM FOR COOPERATIVES  (299 CARDS, LAST=#299) CP   1
C00011 00003	             READ 5050, CODEX(I), NAMEX(I,1), NAMEX(I,2), UNITX(I),      CP  56
C00019 00004	                         PRINT 5140, CATX                                CP 115
C00027 00005	             IF (K.EQ.0) GO TO 360                                       CP 174
C00035 00006	                   L=5                                                   CP 233
C00042 00007	          SUBROUTINE ERRCHK (I, *)                                       CP 287
C00044 00008	C *** BILLING PROGRAM FOR COOPERATIVES      (390 CARDS, LAST = #390)     BP   1
C00051 00009	             DO 65 I=1,NACCTS                                            BP  56
C00059 00010	          M=MXPROD*(MXACCT+6)/7                                          BP 115
C00067 00011	     2                         UNITX(K), PRICE(K), FACTOR(K), K=L,L3,54) BP 174
C00075 00012	                DO 455 L=L1,L2                                           BP 233
C00083 00013	                PRINT 5290, BALNCE(I)                                    BP 292
C00091 00014	5185      FORMAT (1X, I3, 3X, A8, A5, 16X, F8.2)                         BP 351
C00097 ENDMK
CāŠ—;
C *** ORDER COMPILATION PROGRAM FOR COOPERATIVES  (299 CARDS, LAST=#299) CP   1
C     COPYRIGHT (C) 1975 BY CHARLES H. SPALDING III                      CP   2
          LOGICAL ERROR                                                  CP   3
          INTEGER*2 BAGQ(150), BUY(150), I, J, K, L, L1, L2, L3, L4,     CP   4
     2         L5, M, M1, M2, M3, MT(5), MXACCT, MXCAT, MXNOTE, MXPROD,  CP   5
     3         N, N1, N2, NACCTS, NCATS, NK, NNOTES, NPRODS, NT, NUM(8), CP   6
     4         ORDER(200,150), P, PACK(2,200), PMAX, Q, QUAN(19)         CP   7
          REAL AMT(8), BLANKX, CATCDX(10), CATX, CODEX(150), ITEMX(19),  CP   8
     2         LABELX, LIST(10,200), PREFIX, PRICE(150), TEMP,           CP   9
     3         WORDX(3), ZEROX                                           CP  10
          DOUBLE PRECISION COOPX(8), DATEX, EXS, PINFOX(150,5),          CP  11
     2         MEM(5,2), MEMBRX(200,2), NAMEX(150,2), TEMPX(5),          CP  12
     3         T1X, T2X, T3X, UNITX(150), ZEROSX                         CP  13
          DATA BLANKX/' '/, BUY/150*0/, ERROR/.FALSE./, EXS/' '/,        CP  14
     2         LIST/2000*0.0/, MEMBRX/400*' '/, ORDER/30000*0/,          CP  15
     3         PACK/400*0/, WORDX/'WORK','FILE','WORK'/, ZEROX/'00'/,    CP  16
     4         ZEROSX/'00'/                                              CP  17
          MXACCT=200                                                     CP  18
          MXCAT =10                                                      CP  19
          MXPROD=150                                                     CP  20
C  *  READ COOP INFORMATION                                              CP  21
       READ 5000, PREFIX, COOPX                                          CP  22
       PRINT 5010, COOPX                                                 CP  23
C  *  READ ACCOUNTING LIST CATEGORIES (READ CODE, IGNORE REST)           CP  24
       DO 10 I=1,MXCAT                                                   CP  25
          READ 5020, CATCDX(I)                                           CP  26
          IF (CATCDX(I).NE.ZEROX) GO TO 10                               CP  27
          NCATS=I-1                                                      CP  28
          GO TO 20                                                       CP  29
  10         CONTINUE                                                    CP  30
       CALL ERRCHK (1, &250)                                             CP  31
       NCATS=MXCAT                                                       CP  32
C  *  READ MEMBERSHIP FILE (PREFIX, ACCT. NO., NAME, IGNORE REST)        CP  33
  20      NACCTS=0                                                       CP  34
       DO 40 I=1,MXACCT                                                  CP  35
           READ 5030, CATX, N1, T1X, T2X, TEMP                           CP  36
           IF (N1.EQ.0) GO TO 50                                         CP  37
           IF (CATX.EQ.PREFIX) GO TO 25                                  CP  38
              PRINT 5035, N1, CATX                                       CP  39
              ERROR=.TRUE.                                               CP  40
  25             IF (N1.LE.MXACCT) GO TO 26                              CP  41
              PRINT 5035, N1, CATX                                       CP  42
              ERROR=.TRUE.                                               CP  43
              GO TO 40                                                   CP  44
  26          IF (MEMBRX(N1,1).EQ.EXS) GO TO 30                          CP  45
              PRINT 5040, N1                                             CP  46
              ERROR=.TRUE.                                               CP  47
              GO TO 40                                                   CP  48
  30          IF (N1.GT.NACCTS) NACCTS=N1                                CP  49
           MEMBRX(N1,1)=T1X                                              CP  50
           MEMBRX(N1,2)=T2X                                              CP  51
  40          CONTINUE                                                   CP  52
        CALL ERRCHK (2, &250)                                            CP  53
C  *  READ PRODUCT FILE (CODE, NAME, UNITS, BAG INFO, PRICE, NOTE)       CP  54
  50      DO 85 I=1,MXPROD                                               CP  55
             READ 5050, CODEX(I), NAMEX(I,1), NAMEX(I,2), UNITX(I),      CP  56
     2                  BAGQ(I), PRICE(I), TEMPX                         CP  57
             IF (CODEX(I).NE.ZEROX) GO TO 60                             CP  58
                NPRODS=I-1                                               CP  59
                GO TO 90                                                 CP  60
  60         IF (I.EQ.1) GO TO 75                                        CP  61
                K=I-1                                                    CP  62
                DO 70 J=1,K                                              CP  63
                   IF (CODEX(I).NE.CODEX(J)) GO TO 70                    CP  64
                      PRINT 5060, CODEX(I)                               CP  65
                      ERROR=.TRUE.                                       CP  66
                      GO TO 85                                           CP  67
  70                  CONTINUE                                           CP  68
  75            DO 80 J=1,5                                              CP  69
  80               PINFOX(I,J)=TEMPX(J)                                  CP  70
  85            CONTINUE                                                 CP  71
          CALL ERRCHK (3, &250)                                          CP  72
          NPRODS=MXPROD                                                  CP  73
C  *  READ DATE TO BE ON OUTPUT                                          CP  74
  90      READ 5070, DATEX                                               CP  75
C  *  READ ORDERS (ACCT, CODE, QUANTITY, ...)                            CP  76
          M=MXACCT*(MXPROD+18)/19                                        CP  77
          DO 150 I=1,M                                                   CP  78
             READ 5080, NT, (ITEMX(J), QUAN(J), J=1,19)                  CP  79
             IF (NT.EQ.0) GO TO 160                                      CP  80
                IF (NT.GT.MXACCT) GO TO 100                              CP  81
                IF (MEMBRX(NT,1).NE.EXS) GO TO 110                       CP  82
 100               PRINT 5090, NT                                        CP  83
                   ERROR=.TRUE.                                          CP  84
                   IF (NT.GT.MXACCT) GO TO 150                           CP  85
 110            N=0                                                      CP  86
                DO 140 J=1,19                                            CP  87
                   IF (ITEMX(J).EQ.BLANKX) GO TO 140                     CP  88
                      DO 130 K=1,NPRODS                                  CP  89
                         N=N+1                                           CP  90
                         IF (N.GT.NPRODS) N=1                            CP  91
                         IF (ITEMX(J).NE.CODEX(N)) GO TO 130             CP  92
                            IF (ORDER(NT,N).EQ.0) GO TO 120              CP  93
                               PRINT 5100, NT, CODEX(N)                  CP  94
                               ERROR=.TRUE.                              CP  95
                               GO TO 140                                 CP  96
 120                           ORDER(NT,N)=QUAN(J)                       CP  97
                            BUY(N)=BUY(N)+QUAN(J)                        CP  98
                            GO TO 140                                    CP  99
 130                        CONTINUE                                     CP 100
                      PRINT 5110, NT, ITEMX(J)                           CP 101
                      ERROR=.TRUE.                                       CP 102
 140                  CONTINUE                                           CP 103
 150               CONTINUE                                              CP 104
          CALL ERRCHK (4, &250)                                          CP 105
C  *  READ ACCOUNTING LISTS (CODE, ACCT, AMOUNT, ...)                    CP 106
 160      PRINT 5120                                                     CP 107
          M=MXCAT*(MXACCT+6)/7                                           CP 108
          DO 230 I=1,M                                                   CP 109
             READ 5130, CATX, (NUM(J), AMT(J), J=1,7)                    CP 110
             IF (CATX.EQ.ZEROX) GO TO 240                                CP 111
                DO 220 J=1,NCATS                                         CP 112
                   IF (CATX.EQ.CATCDX(J)) GO TO 170                      CP 113
                      IF (J.NE.NCATS) GO TO 220                          CP 114
                         PRINT 5140, CATX                                CP 115
                         ERROR=.TRUE.                                    CP 116
 170               DO 210 K=1,7                                          CP 117
                      N=NUM(K)                                           CP 118
                      IF (N.EQ.0) GO TO 210                              CP 119
                         IF (N.GT.MXACCT) GO TO 180                      CP 120
                         IF (MEMBRX(N,1).NE.EXS) GO TO 190               CP 121
 180                           PRINT 5150, CATX, N                       CP 122
                            ERROR=.TRUE.                                 CP 123
                            IF (N.GT.MXACCT) GO TO 210                   CP 124
 190                        IF (LIST(J,N).EQ.0.0) GO TO 200              CP 125
                            PRINT 5160, CATX, N                          CP 126
                            ERROR=.TRUE.                                 CP 127
 200                     LIST(J,N)=AMT(K)                                CP 128
 210                  CONTINUE                                           CP 129
                   GO TO 230                                             CP 130
 220               CONTINUE                                              CP 131
 230            CONTINUE                                                 CP 132
          CALL ERRCHK (5, &240)                                          CP 133
C  *  STOP IF FATAL ERROR(S) DETECTED                                    CP 134
 240      IF (.NOT.ERROR) GO TO 260                                      CP 135
 250         PRINT 5170                                                  CP 136
             STOP                                                        CP 137
 260      PRINT 5180                                                     CP 138
C  *  PRINT BUYING LIST                                                  CP 139
          DO 270 I=1,NPRODS                                              CP 140
             IF (PRICE(I).LT.-0.0001) BUY(I)=0                           CP 141
 270         CONTINUE                                                    CP 142
          PMAX=(NPRODS-1)/112+1                                          CP 143
C         TO GET 1 OR 2 "WORK" COPIES MAKE THE LAST DIGIT IN THE         CP 144
C         FOLLOWING STATEMENT 2 OR 3, RESPECTIVELY.                      CP 145
          DO 320 I=1,2                                                   CP 146
             LABELX=WORDX(I)                                             CP 147
 280         DO 310 P=1,PMAX                                             CP 148
                PRINT 5190, DATEX, LABELX, P, PMAX, COOPX                CP 149
                L1=112*(P-1)+1                                           CP 150
                L2=L1+55                                                 CP 151
                DO 300 L=L1,L2                                           CP 152
                   IF (L.GT.NPRODS) GO TO 320                            CP 153
                      L3=L+56                                            CP 154
                      IF (L3.GT.NPRODS) GO TO 290                        CP 155
                         PRINT 5200, (NAMEX(K,1), NAMEX(K,2), BUY(K),    CP 156
     2                               UNITX(K), PRICE(K), K=L,L3,56)      CP 157
                         GO TO 300                                       CP 158
 290                  PRINT 5200, NAMEX(L,1), NAMEX(L,2), BUY(L),        CP 159
     2                            UNITX(L), PRICE(L)                     CP 160
 300                  CONTINUE                                           CP 161
 310               CONTINUE                                              CP 162
 320            CONTINUE                                                 CP 163
C  *  PRINT PACKING LISTS                                                CP 164
          M=0                                                            CP 165
          DO 360 I=1,NPRODS                                              CP 166
             IF (PRICE(I).LT.-0.0001) GO TO 360                          CP 167
             K=0                                                         CP 168
             DO 330 J=1,NACCTS                                           CP 169
                IF (ORDER(J,I).EQ.0) GO TO 330                           CP 170
                   K=K+1                                                 CP 171
                   PACK(1,K)=J                                           CP 172
 330            CONTINUE                                                 CP 173
             IF (K.EQ.0) GO TO 360                                       CP 174
                M=M+1                                                    CP 175
                PRINT 5240                                               CP 176
                IF (PINFOX(I,1).NE.EXS) PRINT 5205, (PINFOX(I,J),J=1,5)  CP 177
                PRINT 5210, NAMEX(I,1), NAMEX(I,2), UNITX(I),            CP 178
     2                      DATEX, COOPX, CODEX(I), M                    CP 179
                NK=K/2                                                   CP 180
                N=NK                                                     CP 181
                IF (2*N.NE.K) N=N+1                                      CP 182
                IF (NK.EQ.0) GO TO 350                                   CP 183
                   DO 340 J=1,NK                                         CP 184
                      L=J+N                                              CP 185
                      M1=PACK(1,J)                                       CP 186
                      M2=PACK(1,L)                                       CP 187
                      M3=M2-M1                                           CP 188
 340                  PRINT 5220, (ORDER(L,I), L, MEMBRX(L,1),           CP 189
     2                             MEMBRX(L,2), L=M1,M2,M3)              CP 190
 350            IF (N.EQ.NK) GO TO 360                                   CP 191
                   M1=PACK(1,N)                                          CP 192
                   PRINT 5230, ORDER(M1,I), M1, MEMBRX(M1,1),            CP 193
     2                         MEMBRX(M1,2)                              CP 194
 360         CONTINUE                                                    CP 195
          PRINT 5240                                                     CP 196
C  *  PRINT PACKING LABELS (FOR PREPACKAGED ITEMS)                       CP 197
          N=0                                                            CP 198
          DO 430 I=1,NPRODS                                              CP 199
             IF (PRICE(I).LT.-0.0001) GO TO 430                          CP 200
             IF (BAGQ(I).EQ.0) GO TO 430                                 CP 201
             K=0                                                         CP 202
             DO 390 J=1,NACCTS                                           CP 203
                Q=ORDER(J,I)                                             CP 204
                IF (Q.EQ.0) GO TO 390                                    CP 205
 370               K=K+1                                                 CP 206
                   PACK(1,K)=J                                           CP 207
                   IF (Q.LE.BAGQ(I)) GO TO 380                           CP 208
                      PACK(2,K)=BAGQ(I)                                  CP 209
                      Q=Q-BAGQ(I)                                        CP 210
                      GO TO 370                                          CP 211
 380               PACK(2,K)=Q                                           CP 212
 390            CONTINUE                                                 CP 213
             IF (K.EQ.0) GO TO 430                                       CP 214
                N=N+1                                                    CP 215
                IF (N.GT.1) PRINT 5250                                   CP 216
                PRINT 5255                                               CP 217
                T1X=UNITX(I)                                             CP 218
                T2X=NAMEX(I,1)                                           CP 219
                T3X=NAMEX(I,2)                                           CP 220
                L1=(K-1)/5+1                                             CP 221
                DO 420 J=1,L1                                            CP 222
                   L2=5*(J-1)                                            CP 223
                   L3=L2+1                                               CP 224
                   DO 400 L=1,5                                          CP 225
                      L4=L2+L                                            CP 226
                      MT(L)=PACK(1,L4)                                   CP 227
                      M=MT(L)                                            CP 228
                      MEM(L,1)=MEMBRX(M,1)                               CP 229
                      MEM(L,2)=MEMBRX(M,2)                               CP 230
                      IF (L4.EQ.K) GO TO 410                             CP 231
 400                         CONTINUE                                    CP 232
                   L=5                                                   CP 233
 410               PRINT 5260, (PACK(2,M), T1X, DATEX, M=L3,L4)          CP 234
                   PRINT 5270, (T2X, T3X, M=1,L)                         CP 235
 420               PRINT 5280, (PREFIX,MT(M),MEM(M,1),MEM(M,2),M=1,L)    CP 236
 430         CONTINUE                                                    CP 237
          PRINT 5240                                                     CP 238
          STOP                                                           CP 239
5000      FORMAT (A3, 7A8, A5/)                                          CP 240
5010      FORMAT ('0'/'0', 9X, 'ERROR MESSAGES FOR ORDER COMPILATION ',  CP 241
     2            'RUN FOR ', 8A8/'0')                                   CP 242
5020      FORMAT (A2)                                                    CP 243
5030      FORMAT (A3, I3, 1X, 2A8, 40X, F7.2)                            CP 244
5035      FORMAT ('0', 25X, 'MEMBERSHIP FILE CONTAINS ACCOUNT #', I3,    CP 245
     2            ' WITH PREFIX "', A3, '"')                             CP 246
5040      FORMAT ('0', 25X, 'MEMBERSHIP FILE CONTAINS ACCOUNT #', I3,    CP 247
     2            ' MORE THAN ONCE')                                     CP 248
5050      FORMAT (A2, 1X, 2A8, 1X, A6, I2, 5X, F6.3, 1X, 5A8)            CP 249
5060      FORMAT ('0', 25X, 'PRODUCT FILE CONTAINS PRODUCT CODE "',      CP 250
     2            A2, '" MORE THAN ONCE')                                CP 251
5070      FORMAT (A8/)                                                   CP 252
5080      FORMAT (I3, 1X, 19(A2, I2))                                    CP 253
5090      FORMAT ('0', 25X, 'ACCOUNT #', I3, ' ORDERED - THIS ',         CP 254
     2            'ACCOUNT IS INACTIVE')                                 CP 255
5100      FORMAT ('0', 25X, 'ACCOUNT #', I3, ' ORDERED ITEM "', A2,      CP 256
     2            '" MORE THAN ONCE')                                    CP 257
5110      FORMAT ('0', 25X, 'ACCOUNT #', I3, ' ORDERED ITEM "', A2,      CP 258
     2            '" WHICH IS NOT DEFINED')                              CP 259
5120      FORMAT ('0')                                                   CP 260
5130      FORMAT (A2, 1X, 7(I3, 1X, F6.5))                               CP 261
5140      FORMAT ('0', 25X, 'ACCOUNTING LIST CODE "', A2,                CP 262
     2            '" WAS USED - THIS CODE WAS NOT DEFINED')              CP 263
5150      FORMAT ('0', 25X, 'ACCOUNTING LIST "', A2, '" CONTAINS ',      CP 264
     2            'ACCOUNT #', I3, ' WHICH IS INACTIVE')                 CP 265
5160      FORMAT ('0', 25X, 'ACCOUNTING LIST "', A2, '" CONTAINS ',      CP 266
     2            'ACCOUNT #', I3, ' MORE THAN ONCE')                    CP 267
5170      FORMAT ('0'/'0'/10X, 'END OF ERROR LIST -- PROGRAM IS ',       CP 268
     2            'STOPPING -- CORRECT DATA AND RE-RUN'/'1')             CP 269
5180      FORMAT (10X, 'NO ERRORS WERE DETECTED')                        CP 270
5190      FORMAT ('1'/' BUYING LIST FOR ', A8, 9X, '(', A4,              CP 271
     2            ' COPY, PAGE', I2, ' OF', I2, ')', 9X, 8A8/'0')        CP 272
5200      FORMAT (2(14X, 2A8, I5, 3X, A6, '   (', F6.3, ' )', 5X))       CP 273
5205      FORMAT (' ', 38X, '*** NOTE TO PACKER - ', 5A8//)              CP 274
5210      FORMAT (' ', 5X, 2A8, ' BY THE ', A6, '   (', A8, ')    ',     CP 275
     2            8A8, 7X, '(', A2, ')  ', I3//'0', 2(18X, 'MISSING',    CP 276
     3            '   QUANTITY    ACCT   NAME', 9X))                     CP 277
5220      FORMAT ('0'/4X, 2(16X, '_____', I9, '   ->', I5, 4X, 2A8))     CP 278
5230      FORMAT ('0'/20X, '_____', I9, '   ->', I5, 4X, 2A8)            CP 279
5240      FORMAT ('1')                                                   CP 280
5250      FORMAT (' ')                                                   CP 281
5255      FORMAT ('0', 132('_'))                                         CP 282
5260      FORMAT (//'0', I2, 1X, A6, 7X, A8, 4(3X, I2, 1X, A6, 7X, A8))  CP 283
5270      FORMAT (9X, 2A8, 4(11X, 2A8))                                  CP 284
5280      FORMAT (1X, A3, I3, ': ', 2A8, 4(3X, A3, I3, ': ', 2A8))       CP 285
          END                                                            CP 286
          SUBROUTINE ERRCHK (I, *)                                       CP 287
          REAL A, WORDS(3,7), ZEROX                                      CP 288
          DATA WORDS/'LIST', ' HEA', 'DING', ' MEM', 'BERS', 'HIP ',     CP 289
     2               '   P', 'RODU', 'CT  ', '    ', 'ORDE', 'R   ',     CP 290
     3               'ACCT', 'ING ', 'LIST', 'ORDE', 'R CH', 'ANGE',     CP 291
     4               '    ', 'NOTE', '    '/, ZEROX/'00'/                CP 292
          READ 5000, A                                                   CP 293
          IF (A.EQ.ZEROX) RETURN                                         CP 294
             PRINT 5010, (WORDS(J,I), J=1,3)                             CP 295
             RETURN 1                                                    CP 296
5000      FORMAT (A2)                                                    CP 297
5010      FORMAT ('0'/'0', 25X, 'TOO MANY ', 3A4, ' CARDS IN THE DATA')  CP 298
          END                                                            CP 299
C *** BILLING PROGRAM FOR COOPERATIVES      (390 CARDS, LAST = #390)     BP   1
C     COPYRIGHT (C) 1975 BY CHARLES H. SPALDING III                      BP   2
          LOGICAL ERROR, NOCATS, NOTES, RESET                            BP   3
          INTEGER*2 COST(200,150), DIGITX(10), FLAGX, I, J, K, L, L1,    BP   4
     2         L2, L3, L4, L5, LINES(200), M, M1, M2, M3, MCNT(200),     BP   5
     3         MXACCT, MXCAT, MXNOTE, MXPROD, N, N1, N2, NACCTS,         BP   6
     4         NCATS, NK, NLIM, NNOTES, NPRODS, NT, NUM(8),              BP   7
     5         ORDER(200,150), P, PMAX, Q, QUAN(19)                      BP   8
          REAL AMT(8), BALNCE(200), BLANKX, CATCDX(10), CATX,            BP   9
     2         CODEX(150), CST, CTGRYX(10,5), CUMM(200), DLIM,           BP  10
     3         FACTOR(150), ITEMX(19), LABELX, LIST(10,200), MARKUP,     BP  11
     4         MINUSX, NEW(200), PERCNT, PREFIX, PRICE(150), SELL(150),  BP  12
     5         SIGN(10), SIGNX(10), T1(3), TOTAL(200), WORDX(2), ZEROX   BP  13
          DOUBLE PRECISION COOPX(8), DATEX, EXS, INFOX(200,5),           BP  14
     2         MEMBRX(200,2), NAMEX(150,2), NOTEX(10,8), T1X,            BP  15
     3         T2X, T3X, UNITX(150), ZEROSX                              BP  16
          DATA BALNCE/200*0.0/, BLANKX/' '/, CUMM/200*0.0/, DIGITX/'1',  BP  17
     2         '2', '3', '4', '5', '6', '7', '8', '9', '#'/,             BP  18
     3         ERROR/.FALSE./, EXS/' '/, INFOX/1000*' '/, LIST/2000*0./, BP  19
     4         MCNT/200*0/, MINUSX/'-'/, MEMBRX/400*' '/, NEW/200*0.0/,  BP  20
     5         NOCATS, NOTES/2*.FALSE./, ORDER/30000*0/, SIGN/10*1./,    BP  21
     6         WORDX/'WORK', 'FILE'/, ZEROX/'00'/, ZEROSX/'00'/          BP  22
          MXACCT=200                                                     BP  23
          MXCAT =10                                                      BP  24
          MXNOTE=10                                                      BP  25
          MXPROD=150                                                     BP  26
C  *  READ COOP INFORMATION CARD                                         BP  27
          READ 5000, PREFIX, COOPX, PERCNT, DLIM, NLIM, RESET            BP  28
          PRINT 5010, COOPX                                              BP  29
C  *  READ ACCOUNTING LIST CATEGORIES (CODE, SIGN, HEADING)              BP  30
          DO 30 I=1,MXCAT                                                BP  31
             READ 5020, CATCDX(I), SIGNX(I), (CTGRYX(I,J), J=1,5)        BP  32
                IF (CATCDX(I).NE.ZEROX) GO TO 10                         BP  33
                NCATS=I-1                                                BP  34
                IF (NCATS.EQ.0) NOCATS=.TRUE.                            BP  35
                GO TO 40                                                 BP  36
  10         IF (SIGNX(I).EQ.MINUSX) SIGN(I)=-1.                         BP  37
  30         CONTINUE                                                    BP  38
          NCATS=MXCAT                                                    BP  39
C  *  READ MEMBERSHIP FILE CARDS                                         BP  40
  40      NACCTS=0                                                       BP  41
          DO 50 I=1,MXACCT                                               BP  42
             READ 5030, CATX, N1, T1X, T2X, (NOTEX(1,J), J=1,5),         BP  43
     2                  T1(1), N2, T1(2)                                 BP  44
             IF (N1.EQ.0) GO TO 60                                       BP  45
                IF (N1.GT.NACCTS) NACCTS=N1                              BP  46
                MEMBRX(N1,1)=T1X                                         BP  47
                MEMBRX(N1,2)=T2X                                         BP  48
                BALNCE(N1)=T1(1)                                         BP  49
                MCNT(N1)=N2                                              BP  50
                CUMM(N1)=T1(2)                                           BP  51
                DO 50 J=1,5                                              BP  52
                   INFOX(N1,J)=NOTEX(1,J)                                BP  53
  50               CONTINUE                                              BP  54
  60      IF (.NOT.RESET .OR. NOCATS) GO TO 70                           BP  55
             DO 65 I=1,NACCTS                                            BP  56
  65            CUMM(I)=0.0                                              BP  57
C  *  READ PRODUCT FILE (CODE, NAME, UNITS, % MARKUP, PRICE)             BP  58
  70      DO 90 I=1,MXPROD                                               BP  59
             READ 5040, CODEX(I), NAMEX(I,1), NAMEX(I,2), UNITX(I),      BP  60
     2                  FACTOR(I), PRICE(I)                              BP  61
             IF (CODEX(I).NE.ZEROX) GO TO 80                             BP  62
                NPRODS=I-1                                               BP  63
                GO TO 100                                                BP  64
  80         IF (FACTOR(I).EQ.0.0) FACTOR(I)=PERCNT                      BP  65
  90         CONTINUE                                                    BP  66
          NPRODS=MXPROD                                                  BP  67
C  *  READ DATE TO BE ON BILLS                                           BP  68
 100      READ 5050, DATEX                                               BP  69
C  *  READ ORDERS (ACCT, CODE, QUANTITY, ...)                            BP  70
          M=MXACCT*(MXPROD+18)/19                                        BP  71
          DO 120 I=1,M                                                   BP  72
             READ 5060, NT, (ITEMX(J), QUAN(J), J=1,19)                  BP  73
             IF (NT.EQ.0) GO TO 125                                      BP  74
                N=0                                                      BP  75
                DO 120 J=1,19                                            BP  76
                   IF (ITEMX(J).EQ.BLANKX) GO TO 120                     BP  77
                      DO 110 K=1,NPRODS                                  BP  78
                         N=N+1                                           BP  79
                         IF (N.GT.NPRODS) N=1                            BP  80
                         IF (ITEMX(J).NE.CODEX(N)) GO TO 110             BP  81
                            ORDER(NT,N)=QUAN(J)                          BP  82
                            GO TO 120                                    BP  83
 110                     CONTINUE                                        BP  84
 120               CONTINUE                                              BP  85
C  *  READ ACCOUNTING LISTS (CODE, ACCT, AMOUNT, ...)                    BP  86
 125      M=MXCAT*(MXACCT+6)/7                                           BP  87
          DO 170 I=1,M                                                   BP  88
             READ 5070, CATX, (NUM(J), AMT(J), J=1,7)                    BP  89
             IF (CATX.EQ.ZEROX) GO TO 180                                BP  90
                DO 160 J=1,NCATS                                         BP  91
                   IF (CATX.EQ.CATCDX(J)) GO TO 130                      BP  92
                   IF (J.NE.NCATS) GO TO 160                             BP  93
                      PRINT 5071, CATX                                   BP  94
                      ERROR=.TRUE.                                       BP  95
 130               DO 150 K=1,7                                          BP  96
                      N=NUM(K)                                           BP  97
                      IF (N.EQ.0) GO TO 150                              BP  98
                         IF (N.GT.MXACCT) GO TO 135                      BP  99
                         IF (MEMBRX(N,1).NE.EXS) GO TO 140               BP 100
 135                        PRINT 5072, CATX, N                          BP 101
                            ERROR=.TRUE.                                 BP 102
                            IF (N.GT.MXACCT) GO TO 150                   BP 103
 140                        IF (LIST(J,N).EQ.0.0) GO TO 145              BP 104
                            PRINT 5073, CATX, N                          BP 105
                            ERROR=.TRUE.                                 BP 106
 145                        LIST(J,N)=AMT(K)                             BP 107
 150                  CONTINUE                                           BP 108
                   GO TO 170                                             BP 109
 160               CONTINUE                                              BP 110
 170            CONTINUE                                                 BP 111
          CALL ERRCHK (5, &290)                                          BP 112
C  *  READ ORDER CHANGES                                                 BP 113
 180      PRINT 5065                                                     BP 114
          M=MXPROD*(MXACCT+6)/7                                          BP 115
          DO 250 I=1,M                                                   BP 116
             READ 5080, CATX, (NUM(J), QUAN(J), QUAN(J+7), J=1,7)        BP 117
             IF (CATX.EQ.ZEROX) GO TO 260                                BP 118
                DO 240 J=1,NPRODS                                        BP 119
                   IF (CATX.EQ.CODEX(J)) GO TO 190                       BP 120
                      IF (J.NE.NPRODS) GO TO 240                         BP 121
                         PRINT 5090, CATX                                BP 122
                         ERROR=.TRUE.                                    BP 123
 190               DO 230 K=1,7                                          BP 124
                      N=NUM(K)                                           BP 125
                      IF (N.EQ.0) GO TO 230                              BP 126
                         IF (N.GT.MXACCT) GO TO 200                      BP 127
                         IF (MEMBRX(N,1).NE.EXS) GO TO 210               BP 128
 200                        PRINT 5100, CATX, N                          BP 129
                            ERROR=.TRUE.                                 BP 130
                            GO TO 230                                    BP 131
 210                     IF (ORDER(N,J).EQ.QUAN(K)) GO TO 220            BP 132
                            PRINT 5110, CATX, N                          BP 133
                            ERROR=.TRUE.                                 BP 134
 220                     ORDER(N,J)=QUAN(K+7)                            BP 135
 230                  CONTINUE                                           BP 136
                      GO TO 250                                          BP 137
 240               CONTINUE                                              BP 138
 250            CONTINUE                                                 BP 139
          CALL ERRCHK (6, &290)                                          BP 140
C  *  READ NOTES TO BE COPIED ONTO BILLING SHEETS                        BP 141
 260      DO 270 I=1,MXNOTE                                              BP 142
             READ 5120, (NOTEX(I,J), J=1,8)                              BP 143
             IF (NOTEX(I,1).NE.ZEROSX) GO TO 270                         BP 144
                NNOTES=I-1                                               BP 145
                GO TO 280                                                BP 146
 270         CONTINUE                                                    BP 147
          CALL ERRCHK (7, &290)                                          BP 148
          NNOTES=MXNOTE                                                  BP 149
 280      IF (NNOTES.GT.0) NOTES=.TRUE.                                  BP 150
C  *  STOP IF ERROR(S) DETECTED                                          BP 151
          IF (.NOT.ERROR) GO TO 300                                      BP 152
 290         PRINT 5130                                                  BP 153
             STOP                                                        BP 154
 300      PRINT 5140                                                     BP 155
C  *  COMPUTE SELLING PRICES & PRINT PRICE LIST                          BP 156
          DO 310 I=1,NPRODS                                              BP 157
             J=(100.0+FACTOR(I))*PRICE(I)+0.5                            BP 158
 310         SELL(I)=J/100.0                                             BP 159
          PMAX=(NPRODS-1)/108+1                                          BP 160
C         TO GET 1 OR 2 "WORK" COPIES MAKE THE LAST DIGIT IN THE         BP 161
C         FOLLOWING STATEMENT 2 OR 3, RESPECTIVELY.                      BP 162
          DO 360 I=1,2                                                   BP 163
             LABELX=WORDX(I)                                             BP 164
 330         DO 350 P=1,PMAX                                             BP 165
                PRINT 5150, DATEX, LABELX, P, PMAX, COOPX                BP 166
                L1=108*(P-1)+1                                           BP 167
                L2=L1+53                                                 BP 168
                DO 350 L=L1,L2                                           BP 169
                   IF (L.GT.NPRODS) GO TO 360                            BP 170
                      L3=L+54                                            BP 171
                      IF (L3.GT.NPRODS) GO TO 340                        BP 172
                         PRINT 5160, (NAMEX(K,1), NAMEX(K,2), SELL(K),   BP 173
     2                         UNITX(K), PRICE(K), FACTOR(K), K=L,L3,54) BP 174
                         GO TO 350                                       BP 175
 340                     PRINT 5160, NAMEX(L,1), NAMEX(L,2), SELL(L),    BP 176
     2                               UNITX(L), PRICE(L), FACTOR(L)       BP 177
 350                  CONTINUE                                           BP 178
 360         CONTINUE                                                    BP 179
C  *  COMPUTE BILLS & STATUS OF ACCOUNTS TOTALS                          BP 180
          DO 370 I=1,MXCAT                                               BP 181
 370         PRICE(I)=0.0                                                BP 182
          DO 380 I=1,3                                                   BP 183
 380         T1(I)=0.0                                                   BP 184
          M=0                                                            BP 185
          DO 430 I=1,NACCTS                                              BP 186
             TOTAL(I)=0.0                                                BP 187
             K=17                                                        BP 188
             DO 390 J=1,NPRODS                                           BP 189
                Q=ORDER(I,J)                                             BP 190
                IF (Q.EQ.0) GO TO 390                                    BP 191
                   K=K+1                                                 BP 192
                   IF (SELL(J).LT.0.0001) GO TO 390                      BP 193
                      N=100.0*Q*SELL(J)+0.5                              BP 194
                      COST(I,J)=N                                        BP 195
                      TOTAL(I)=TOTAL(I)+N                                BP 196
 390            CONTINUE                                                 BP 197
             TOTAL(I)=TOTAL(I)/100.0                                     BP 198
             LINES(I)=K                                                  BP 199
             IF (NOCATS) GO TO 405                                       BP 200
                CST=BALNCE(I)                                            BP 201
                DO 400 J=1,NCATS                                         BP 202
 400               CST=CST+SIGN(J)*LIST(J,I)                             BP 203
                NEW(I)=CST-TOTAL(I)                                      BP 204
                T1(1)=T1(1)+NEW(I)                                       BP 205
                T1(2)=T1(2)+BALNCE(I)                                    BP 206
                CUMM(I)=CUMM(I)+TOTAL(I)                                 BP 207
 405         T1(3)=T1(3)+TOTAL(I)                                        BP 208
             IF (TOTAL(I).NE.0.0) M=M+1                                  BP 209
             IF (NOCATS) GO TO 430                                       BP 210
                IF (NEW(I).LT.DLIM) GO TO 410                            BP 211
                   MCNT(I)=0                                             BP 212
                   GO TO 420                                             BP 213
 410            MCNT(I)=MCNT(I)+1                                        BP 214
 420            DO 425 K=1,NCATS                                         BP 215
 425               PRICE(K)=PRICE(K)+LIST(K,I)                           BP 216
C  *  PRINT STATUS OF ACCOUNTS                                           BP 217
 430      K=NACCTS+4                                                     BP 218
          IF (.NOT.NOCATS) K=K+(NCATS+3)/4+1                             BP 219
          L4=NACCTS+2                                                    BP 220
          L5=NACCTS+6                                                    BP 221
          PMAX=K/54+1                                                    BP 222
C         LAST DIGIT OF NEXT STATEMENT SETS NO. OF COPIES; MUST BE > 0.  BP 223
          DO 490 I=1,2                                                   BP 224
             N=1                                                         BP 225
             DO 490 P=1,PMAX                                             BP 226
                PRINT 5170, DATEX, P, PMAX, COOPX                        BP 227
                IF (.NOT.NOCATS) PRINT 5175, (CATCDX(J), J=1,NCATS)      BP 228
                PRINT 5180                                               BP 229
                L1=54*(P-1)+1                                            BP 230
                L2=L1+53                                                 BP 231
                L3=P*54                                                  BP 232
                DO 455 L=L1,L2                                           BP 233
                   IF (L.GT.NACCTS) GO TO 460                            BP 234
                      IF (.NOT.NOCATS) GO TO 435                         BP 235
                         PRINT 5185, L,MEMBRX(L,1),MEMBRX(L,2),TOTAL(L)  BP 236
                         GO TO 455                                       BP 237
 435                  IF (MCNT(L).LT.NLIM) GO TO 440                     BP 238
                         N1=MCNT(L)                                      BP 239
                         IF (N1.EQ.0) GO TO 440                          BP 240
                            IF (N1.GT.10) N1=10                          BP 241
                            FLAGX=DIGITX(N1)                             BP 242
                            GO TO 450                                    BP 243
 440                  FLAGX=BLANKX                                       BP 244
 450                  PRINT 5190, L, FLAGX, MEMBRX(L,1), MEMBRX(L,2),    BP 245
     2                            NEW(L), BALNCE(L), TOTAL(L),           BP 246
     3                            CUMM(L), (LIST(K,L), K=1,NCATS)        BP 247
 455                  CONTINUE                                           BP 248
                      GO TO 490                                          BP 249
 460            IF (L4.GT.L3) GO TO 490                                  BP 250
                   IF (N.GT.1) GO TO 470                                 BP 251
                      N=N+1                                              BP 252
                      IF (.NOT.NOCATS) GO TO 465                         BP 253
                         PRINT 5200, M, T1                               BP 254
                         GO TO 470                                       BP 255
 465                  PRINT 5200, M, T1, (PRICE(K), K=1,NCATS)           BP 256
 470               IF (NOCATS) GO TO 490                                 BP 257
                   IF (L5.GT.L3) GO TO 490                               BP 258
                      IF (N.GT.2) GO TO 480                              BP 259
                         N=N+1                                           BP 260
                         PRINT 5210, DLIM, NLIM                          BP 261
 480                  IF (NACCTS+(NCATS+3)/4+6.GT.L3) GO TO 490          BP 262
                         PRINT 5220, (CATCDX(J), SIGNX(J),               BP 263
     2                                (CTGRYX(J,K), K=1,5), J=1,NCATS)   BP 264
 490            CONTINUE                                                 BP 265
C  *  PRINT BILLING SHEETS                                               BP 266
          DO 560 I=1,NACCTS                                              BP 267
             IF (MEMBRX(I,1).EQ.EXS) GO TO 560                           BP 268
             IF (TOTAL(I).EQ.0.0 .AND. BALNCE(I).EQ.NEW(I)) GO TO 560    BP 269
             PRINT 5230, PREFIX, I, MEMBRX(I,1), MEMBRX(I,2),            BP 270
     2                   (INFOX(I,J), J=1,5), COOPX                      BP 271
             IF (LINES(I).LT.18) GO TO 520                               BP 272
                IF (NOCATS) PRINT 5235, DATEX                            BP 273
                PRINT 5240                                               BP 274
                DO 510 J=1,NPRODS                                        BP 275
                   IF (ORDER(I,J).EQ.0) GO TO 510                        BP 276
                      IF (SELL(J).GT.0.0001) GO TO 500                   BP 277
                         IF (SELL(J).GT.-0.0001) GO TO 495               BP 278
                            PRINT 5245, NAMEX(J,1), NAMEX(J,2),          BP 279
     2                                  ORDER(I,J), UNITX(J)             BP 280
                            GO TO 510                                    BP 281
 495                     PRINT 5250, NAMEX(J,1), NAMEX(J,2),             BP 282
     2                               ORDER(I,J), UNITX(J)                BP 283
                         GO TO 510                                       BP 284
 500                  CST=COST(I,J)/100.0                                BP 285
                      PRINT 5260, NAMEX(J,1), NAMEX(J,2), ORDER(I,J),    BP 286
     2                            UNITX(J), SELL(J), CST                 BP 287
 510               CONTINUE                                              BP 288
                PRINT 5270, TOTAL(I)                                     BP 289
 520         IF (NOCATS) GO TO 545                                       BP 290
                PRINT 5280, DATEX                                        BP 291
                PRINT 5290, BALNCE(I)                                    BP 292
                DO 540 J=1,NCATS                                         BP 293
                   IF (LIST(J,I).EQ.0.0) GO TO 540                       BP 294
                      IF (SIGN(J).LT.0.0) GO TO 530                      BP 295
                         PRINT 5300, (CTGRYX(J,K), K=1,5), LIST(J,I)     BP 296
                         GO TO 540                                       BP 297
 530                  PRINT 5310, (CTGRYX(J,K), K=1,5), LIST(J,I)        BP 298
 540               CONTINUE                                              BP 299
                PRINT 5320, TOTAL(I), NEW(I)                             BP 300
 545            IF (.NOT.NOTES) GO TO 560                                BP 301
                   PRINT 5330                                            BP 302
                   DO 550 J=1,NNOTES                                     BP 303
 550                  PRINT 5340, (NOTEX(J,K), K=1,8)                    BP 304
 560         CONTINUE                                                    BP 305
C  *  PUNCH NEW MEMBERSHIP FILE CARDS                                    BP 306
          PRINT 5350                                                     BP 307
          IF (NOCATS) STOP                                               BP 308
          DO 570 I=1,NACCTS                                              BP 309
 570         PUNCH 5030, PREFIX, I, MEMBRX(I,1), MEMBRX(I,2),            BP 310
     2                   (INFOX(I,J), J=1,5), NEW(I), MCNT(I), CUMM(I)   BP 311
          STOP                                                           BP 312
5000      FORMAT (A3, 7A8, A5, F5.1, F7.2, I2, L2/)                      BP 313
5010      FORMAT ('0'/'0', 9X, 'ERROR MESSAGES FOR BILLING RUN FOR ',    BP 314
     2            8A8/'0')                                               BP 315
5020      FORMAT (A2, 1X, A1, 1X, 5A4)                                   BP 316
5030      FORMAT (A3, I3, 1X, 7A8, F7.2, I2, F8.2)                       BP 317
5040      FORMAT (A2, 1X, 2A8, 1X, A6, 2X, F5.1, F6.3)                   BP 318
5050      FORMAT (A8/)                                                   BP 319
5060      FORMAT (I3, 1X, 19(A2, I2))                                    BP 320
5065      FORMAT ('0')                                                   BP 321
5070      FORMAT (A2, 1X, 7(I3, 1X, F6.5))                               BP 322
5071      FORMAT ('0', 25X, 'ACCOUNTING LIST CODE "', A2,                BP 323
     2            '" WAS USED - THIS CODE WAS NOT DEFINED')              BP 324
5072      FORMAT ('0', 25X, 'ACCOUNTING LIST "', A2, '" CONTAINS ',      BP 325
     2            'ACCOUNT #', I3, ' WHICH IS INACTIVE')                 BP 326
5073      FORMAT ('0', 25X, 'ACCOUNTING LIST "', A2, '" CONTAINS ',      BP 327
     2            'ACCOUNT #', I3, ' MORE THAN ONCE')                    BP 328
5080      FORMAT (A2, 7(I4, 2(1X, I2)))                                  BP 329
5090      FORMAT ('0', 25X, 'AN ORDER CHANGE WAS SUBMITTED FOR ',        BP 330
     2            'PRODUCT "', A2, '" WHICH IS NOT DEFINED')             BP 331
5100      FORMAT ('0', 25X, 'AN ORDER CHANGE FOR PRODUCT "', A2, '" WAS' BP 332
     2            , ' ENTERED FOR ACCOUNT #', I3, ' WHICH IS INACTIVE')  BP 333
5110      FORMAT ('0', 25X, 'THE ORDER CHANGE FOR PRODUCT "', A2,        BP 334
     2            '" FOR ACCOUNT #', I3, ' DOES NOT AGREE WITH ',        BP 335
     3            'THE ORIGINAL ORDER')                                  BP 336
5120      FORMAT (8A8)                                                   BP 337
5130      FORMAT ('0'/'0'/10X, 'END OF ERROR LIST -- PROGRAM IS ',       BP 338
     2            'STOPPING -- CORRECT DATA AND RE-RUN'/'1')             BP 339
5140      FORMAT (10X, 'NO ERRORS WERE DETECTED')                        BP 340
5150      FORMAT ('1'/' PRICE LIST FOR ', A8, 8X, '(', A4,               BP 341
     2            ' COPY, PAGE', I2, ' OF', I2, ')', 8X, 8A8//'0',       BP 342
     3            2(6X, 'ITEM', 13X, 'SELL AT    UNIT      COST',        BP 343
     4            '   MARKUP (%)', 5X)/)                                 BP 344
5160      FORMAT (2(7X, 2A8, F7.2, 5X, A6, F9.3, F9.1, 7X))              BP 345
5170      FORMAT ('1'/' STATUS OF ACCOUNTS AS OF ', A8, '   (PAGE',      BP 346
     2            I2, ' OF', I2, ')', 5X, 8A8//'0ACCT  NAME', 11X,       BP 347
     3            'NEW-BAL OLD-BAL  ORDER   CUMUL')                      BP 348
5175      FORMAT ('+', 51X, 10(5X, A2, 1X))                              BP 349
5180      FORMAT (' ')                                                   BP 350
5185      FORMAT (1X, I3, 3X, A8, A5, 16X, F8.2)                         BP 351
5190      FORMAT (1X, I3, 1X, A1, 1X, A8, A5, 14F8.2)                    BP 352
5200      FORMAT ('0TOTALS (', I3, ' ORDERS)', 3F8.2, 8X, 10F8.2)        BP 353
5210      FORMAT (/'0NOTES:  1 - DIGIT AFTER ACCT. NO. IS NUMBER OF ',   BP 354
     2            'CONSECUTIVE TIMES BALANCE HAS BEEN BELOW $', F6.2,    BP 355
     3            '.'/13X, 'DIGITS LESS THAN', I2, ' ARE NOT PRINTED.',  BP 356
     4            '  "#" IS PRINTED IF DIGIT WOULD BE GREATER THAN 9.')  BP 357
5220      FORMAT ('0', 8X, '2 - COLUMN CODES:', T26, 4(2X, A2, 1X, A1,   BP 358
     2            1X, 5A4), 2(/25X, 4(2X, A2, 1X, A1, 1X, 5A4)))         BP 359
5230      FORMAT ('1', A3, I3, ': ', 7A8/'0', 3X, 8A8/)                  BP 360
5235      FORMAT ('0', 5X, 'ORDER FOR ', A8, ':')                        BP 361
5240      FORMAT ('0',10X,'ITEM',16X,'QUANTITY   UNIT PRICE   TOTAL'/)   BP 362
5245      FORMAT (11X, 2A8, I5, 2X, A6, 2X, 'NO LONGER AVAILABLE')       BP 363
5250      FORMAT (11X, 2A8, I5, 2X, A6, 2X, 'NOT BOUGHT')                BP 364
5260      FORMAT (11X, 2A8, I5, 2X, A6, F9.2, F11.2)                     BP 365
5270      FORMAT ('0', 10X, 'TOTAL OF ORDER', 25X, F10.2)                BP 366
5280      FORMAT ('0'/'0', 10X, 'STATEMENT OF ACCOUNT FOR PERIOD ',      BP 367
     2            'ENDING ',A8/'0',32X,'CHARGES   CREDITS   BALANCE'/)   BP 368
5290      FORMAT (11X, 'OLD BALANCE', 27X, F10.2)                        BP 369
5300      FORMAT (11X, 5A4, F18.2)                                       BP 370
5310      FORMAT (11X, 5A4, F8.2)                                        BP 371
5320      FORMAT (11X, 'TODAY''S ORDER', F15.2/'0',                      BP 372
     2            10X, 'NEW BALANCE', 27X, F10.2)                        BP 373
5330      FORMAT ('0'/'0')                                               BP 374
5340      FORMAT (1X, 8A8)                                               BP 375
5350      FORMAT ('1')                                                   BP 376
          END                                                            BP 377










          SUBROUTINE ERRCHK (I, *)                                       BP 378
          REAL A, WORDS(3,7), ZEROX                                      BP 379
          DATA WORDS/'LIST', ' HEA', 'DING', ' MEM', 'BERS', 'HIP ',     BP 380
     2               '   P', 'RODU', 'CT  ', '    ', 'ORDE', 'R   ',     BP 381
     3               'ACCT', 'ING ', 'LIST', 'ORDE', 'R CH', 'ANGE',     BP 382
     4               '    ', 'NOTE', '    '/, ZEROX/'00'/                BP 383
          READ 5000, A                                                   BP 384
          IF (A.EQ.ZEROX) RETURN                                         BP 385
             PRINT 5010, (WORDS(J,I), J=1,3)                             BP 386
             RETURN 1                                                    BP 387
5000      FORMAT (A2)                                                    BP 388
5010      FORMAT ('0'/'0', 25X, 'TOO MANY ', 3A4, ' CARDS IN THE DATA')  BP 389
          END                                                            BP 390